﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Subgurim.Controles;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Entidad;
using DevExpress.Web.ASPxEditors;

namespace Crosland.Automotriz.Web.CRM
{
    public partial class wFrmMapaPopup : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false) 
            {
                ListarDepartamento();

                ListEditItem l = new ListEditItem() { Text = "Todos", Value = "0" };

                cboProvincia.Items.Insert(0, l);
                cboProvincia.SelectedIndex = 0;

                ListEditItem d = new ListEditItem() { Text = "Todos", Value = "0" };

                cboDistrito.Items.Insert(0, d);
                cboDistrito.SelectedIndex = 0;

                ListarSupervisores();
                ListarTipoClasificacion();

                string departamento = Request.QueryString["dep"];
                cboDepartamento.Value = departamento;
                cboDepartamento_SelectedIndexChanged(null, null);

                string provincia = Request.QueryString["pro"];
                cboProvincia.Value = provincia;
                cboProvincia_SelectedIndexChanged(null, null);

                string distrito = Request.QueryString["dis"];
                cboDistrito.Value = distrito;

                string supervisor = Request.QueryString["sup"];
                cboSupervisor.Value = supervisor;

                bool W2 = bool.Parse(Request.QueryString["p0"]);
                if (W2) { chkClasificacion.Items[0].Selected = true; } else { chkClasificacion.Items[0].Selected = false; }

                bool W3 = bool.Parse(Request.QueryString["p1"]);
                if (W3) { chkClasificacion.Items[3].Selected = true; } else { chkClasificacion.Items[3].Selected = false; }

                bool StandardizedYesNo = bool.Parse(Request.QueryString["p2"]);
                if (StandardizedYesNo) { chkClasificacion.Items[5].Selected = true; } else { chkClasificacion.Items[5].Selected = false; }

                bool W2REP = bool.Parse(Request.QueryString["p3"]);
                if (W2REP) { chkClasificacion.Items[7].Selected = true; } else { chkClasificacion.Items[7].Selected = false; }

                bool W3REP = bool.Parse(Request.QueryString["p4"]);
                if (W3REP) { chkClasificacion.Items[9].Selected = true; } else { chkClasificacion.Items[9].Selected = false; }
                
                bool W2STA = bool.Parse(Request.QueryString["p5"]);
                if (W2STA) { chkClasificacion.Items[1].Selected = true; } else { chkClasificacion.Items[1].Selected = false; }

                bool W3STA = bool.Parse(Request.QueryString["p6"]);
                if (W3STA) { chkClasificacion.Items[4].Selected = true; } else { chkClasificacion.Items[4].Selected = false; }

                bool StandardizedYesNoSTA = bool.Parse(Request.QueryString["p7"]);
                if (StandardizedYesNoSTA) { chkClasificacion.Items[6].Selected = true; } else { chkClasificacion.Items[6].Selected = false; }

                bool TALLER = bool.Parse(Request.QueryString["p8"]);
                if (TALLER) { chkClasificacion.Items[8].Selected = true; } else { chkClasificacion.Items[8].Selected = false; }

                bool VC = bool.Parse(Request.QueryString["p9"]);
                if (VC) { chkClasificacion.Items[10].Selected = true; } else { chkClasificacion.Items[10].Selected = false; }

                bool RC = bool.Parse(Request.QueryString["p10"]);
                if (RC) { chkClasificacion.Items[2].Selected = true; } else { chkClasificacion.Items[2].Selected = false; }

                PintarMapa();
            }
        }

        void ListarDepartamento()
        {
            clsTD_UbigeoBL UbigeoBL = new clsTD_UbigeoBL();
            cboDepartamento.DataSource = UbigeoBL.ListarDepartamento();
            cboDepartamento.TextField = "DES_DEPARTAMENTO";
            cboDepartamento.ValueField = "COD_DEPARTAMENTO";
            cboDepartamento.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Todos", Value = "0" };
            cboDepartamento.Items.Insert(0, l);
            cboDepartamento.SelectedIndex = 0;
        }

        void ListarProvincia()
        {
            string COD_DEPARTAMENTO = cboDepartamento.SelectedItem.Value.ToString();
            clsTD_UbigeoBL UbigeoBL = new clsTD_UbigeoBL();
            cboProvincia.DataSource = UbigeoBL.ListarProvincia(COD_DEPARTAMENTO);
            cboProvincia.TextField = "DES_PROVINCIA";
            cboProvincia.ValueField = "COD_PROVINCIA";
            cboProvincia.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Todos", Value = "0" };
            cboProvincia.Items.Insert(0, l);
            cboProvincia.SelectedIndex = 0;
        }

        void ListarDistrito()
        {
            string COD_PROVINCIA = cboProvincia.SelectedItem.Value.ToString();
            clsTD_UbigeoBL UbigeoBL = new clsTD_UbigeoBL();
            cboDistrito.DataSource = UbigeoBL.ListarDistrito(COD_PROVINCIA);
            cboDistrito.TextField = "DES_DISTRITO";
            cboDistrito.ValueField = "ID_UBIGEO";
            cboDistrito.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Todos", Value = "0" };
            cboDistrito.Items.Insert(0, l);
            cboDistrito.SelectedIndex = 0;
        }

        void ListarSupervisores()
        {
            clsTD_VendedorBL vendedorBL = new clsTD_VendedorBL();
            cboSupervisor.DataSource = vendedorBL.ListaSupervisores();
            cboSupervisor.TextField = "APELLIDO";
            cboSupervisor.ValueField = "ID_VENDEDOR";
            cboSupervisor.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Todos", Value = "0" };
            cboSupervisor.Items.Insert(0, l);
            cboSupervisor.SelectedIndex = 0;
        }

        void ListarTipoClasificacion()
        {
            clsTD_Tipo_ClasificacionBL tcBL = new clsTD_Tipo_ClasificacionBL();
            chkClasificacion.DataSource = tcBL.Listar();
            chkClasificacion.DataTextField = "DES_NOMBRE";
            chkClasificacion.DataValueField = "ID_TIPO_CLASIFICACION";
            chkClasificacion.DataBind();
        }

        void PintarMapa()
        {
            mapa3.reset();
            mapa3.enableDragging = true;
            mapa3.enableHookMouseWheelToZoom = true;
            mapa3.setCenter(new GLatLng(-9.750000, -76.000000), 6);
            mapa3.Add(new GControl(GControl.preBuilt.GOverviewMapControl));
            mapa3.Add(new GMapUI());

            string departamento = "";
            if (cboDepartamento.SelectedIndex == 0) { departamento = ""; } else { departamento = cboDepartamento.SelectedItem.Text.ToString(); }

            string provincia = "";
            if (cboProvincia.SelectedIndex == 0) { provincia = ""; } else { provincia = cboProvincia.SelectedItem.Text.ToString(); }

            string distrito = "";
            if (cboDistrito.SelectedIndex == 0) { distrito = ""; } else { distrito = cboDistrito.SelectedItem.Text.ToString(); }

            string supervisor = "";
            if (cboSupervisor.SelectedIndex == 0) { supervisor = ""; } else { supervisor = cboSupervisor.SelectedItem.Text.ToString(); }

            string W2 = "0";
            string W3 = "0";
            string StandardizedYesNo = "0";
            string W2REP = "0";
            string W3REP = "0";
            string W2STA = "0";
            string W3STA = "0";
            string StandardizedYesNoSTA = "0";

            string TALLER = "0";
            string VC = "0";
            string RC = "0";

            if (chkClasificacion.Items[0].Selected) { W2 = chkClasificacion.Items[0].Value; } else { W2 = "0"; }
            if (chkClasificacion.Items[1].Selected) { W3 = chkClasificacion.Items[1].Value; } else { W3 = "0"; }
            if (chkClasificacion.Items[2].Selected) { StandardizedYesNo = chkClasificacion.Items[2].Value; } else { StandardizedYesNo = "0"; }
            if (chkClasificacion.Items[3].Selected) { W2REP = chkClasificacion.Items[3].Value; } else { W2REP = "0"; }
            if (chkClasificacion.Items[4].Selected) { W3REP = chkClasificacion.Items[4].Value; } else { W3REP = "0"; }
            if (chkClasificacion.Items[5].Selected) { W2STA = chkClasificacion.Items[5].Value; } else { W2STA = "0"; }
            if (chkClasificacion.Items[6].Selected) { W3STA = chkClasificacion.Items[6].Value; } else { W3STA = "0"; }
            if (chkClasificacion.Items[7].Selected) { StandardizedYesNoSTA = chkClasificacion.Items[7].Value; } else { StandardizedYesNoSTA = "0"; }
            if (chkClasificacion.Items[8].Selected) { TALLER = chkClasificacion.Items[8].Value; } else { TALLER = "0"; }
            if (chkClasificacion.Items[9].Selected) { VC = chkClasificacion.Items[9].Value; } else { VC = "0"; }
            if (chkClasificacion.Items[10].Selected) { RC = chkClasificacion.Items[10].Value; } else { RC = "0"; }

            double x = 0;
            double y = 0;

            clsTD_ChannelManagementBL bl = new clsTD_ChannelManagementBL();
            List<VW_Reporte_Mapa> mapa = bl.Listar(departamento, provincia, distrito, supervisor, W2, W3, StandardizedYesNo, W2STA, W3STA, StandardizedYesNoSTA, W2REP, W3REP, TALLER, VC, RC);
            foreach (var item in mapa)
            {
                x = double.Parse(item.NUM_COORDENADA_X);
                y = double.Parse(item.NUM_COORDENADA_Y);
                if (x != 0 && y != 0)
                {
                    GIcon icon = new GIcon();
                    icon.image = item.DES_RUTA_ICONO;
                    icon.iconSize = new GSize(20, 34);
                    icon.iconAnchor = new GPoint(20, 34);

                    GMarker marker = new GMarker(new GLatLng(x, y), icon);

                    string texto = String.Format(CadenaHtml.HtmlLocalDetalle, item.DES_CLIENTE, item.DES_NOMBRE,
                    item.DES_DEPARTAMENTO, item.DES_PROVINCIA, item.DES_DISTRITO, item.DES_DIRECCION, item.SUPERVISOR, item.ID_LOCAL, item.ID_CLIENTE);

                    GInfoWindow window = new GInfoWindow(marker, texto, false);

                    mapa3.Add(window);
                }
            }
        }

        protected void cboDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListarProvincia();
            cboProvincia.Focus();
        }

        protected void cboProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListarDistrito();
            cboDistrito.Focus();
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            PintarMapa();
        }
    }
}